#include <iostream>
#include <list>
#include <vector>
#include <string>
#include "vertex.h"

using namespace std; 

typedef list<Vertex> AdjacencyList;

class Graph {
private:
	vector<AdjacencyList> graph;

public:
	Graph();

	int getNumberOfNodes(){
		return graph.size();
	}

	AdjacencyList createVertex(int n);
	AdjacencyList addNeighbour(AdjacencyList v, int n, int d);
	void addVertex(AdjacencyList adjacencyList);
	AdjacencyList* getNeighbourhood(int name);
	void addEdge(int s, int t, int d); //add a edge in the graph, if the node source doesnt exist create it.	

	void loadGraphFromFile(string fileName);	
	void loadGraph();
	void printGraph();
};


